package com.tjbank.cssys.framework.base.api.paging;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;

/**
 * Copyright © 天阳宏业科技股份有限公司 - All Rights Reserved
 *
 * @author guzheng@tansun.com.cn
 * @description: 分页信息对象 <br/>
 * <p>
 * <pre>
 *   {
 *        "first": true,
 *        "last": true,
 *        "number": 1,
 *        "size": 20,
 *        "totalPages": 1,
 *        "totalElements": 1,
 *        "sort": [
 *            "null"
 *        ],
 *        "numberOfElements": 1
 *   }
 * </pre>
 * </p>
 * @date: 2020-03-12 18:59
 **/
public class PagingMetadata<T> {
    private final Page<T> data;

    public PagingMetadata(Page<T> data) {
        this.data = data;
    }

    /**
     * 是否为首页 {@link Page}.
     */
    public boolean isFirst() {
        return data.isFirst();
    }

    /**
     * 是否为尾页 {@link Page}.
     */
    public boolean isLast() {
        return data.isLast();
    }


    /**
     * 每一页显示的记录数量{@link Page}.
     *
     * @return {@link Page}页面显示记录数量.
     */
    public int getSize() {
        return data.getSize();
    }

    /**
     * 当前页面的记录数量{@link Page}.
     *
     * @return 当前页面的记录数量 {@link Page}.
     */
    public int getNumberOfElements() {
        return data.getContent().size();
    }

    /**
     * 总页数.
     *
     * @return 总页数
     */
    public int getTotalPages() {
        return data.getTotalPages();
    }

    /**
     * 总记录数量.
     *
     * @return 总的记录数量
     */
    public long getTotalElements() {
        return data.getTotalElements();
    }

    /**
     * 排序对象 {@link Page}.
     */
    public Sort getSort() {
        return data.getSort();
    }
}
